package com.baijia.authentication.handler;

import com.baijia.authentication.handler.exception.AuthenticationException;
import com.baijia.authentication.principal.Credentials;

/**
 * @title AuthenticationHandler
 * @desc 认证逻辑需要实现的方法
 * @author caoliang
 * @date 2015年12月4日
 * @version 1.0
 */
public interface AuthenticationHandler {

    /**
     * 认证逻辑
     * 
     * @param 登录凭证
     * @return 认证结果
     * @throws 特殊逻辑可以抛出异常，一般不抛
     */
    boolean authenticate(Credentials credentials)
        throws AuthenticationException;

    /**
     * 登录凭证是否被支持
     * 
     * @param 登录凭证
     * @return 是否支持
     */
    boolean supports(Credentials credentials);
}
